import globals from 'globals';
import pluginJs from '@eslint/js';
import tseslint from 'typescript-eslint';
import pluginVue from 'eslint-plugin-vue';
import pluginPrettierRecommendedConfigs from 'eslint-plugin-prettier/recommended';

export default [
	{ files: ['**/*.{js,mjs,cjs,ts,vue}'] },
	{
		languageOptions: {
			globals: { ...globals.browser, ...globals.es2020, ...globals.node },
		},
	},
	pluginJs.configs.recommended, // eslint 默认推荐规则
	...tseslint.configs.recommended, // ts 默认推荐规则
	...pluginVue.configs['flat/essential'], // vue3 基础推荐规则
	pluginPrettierRecommendedConfigs, // prettier 默认推荐规则
	{
		files: ['**/*.vue'],
		languageOptions: { parserOptions: { parser: tseslint.parser } },
		rules: {
			'no-console': 1, // 禁止使用 console
			'no-alert': 1, // 禁用 alert、confirm 和 prompt
			'max-len': ['error', { code: 180 }], // 一行最大长度
			'no-plusplus': 2, // 禁止使用 ++ 和 --
			'no-trailing-spaces': 1, // 禁止行尾空格
			'no-self-compare': 2, // 禁止自己和自己比较
			'no-var': 2, // 禁止使用 var
			'prefer-const': 2, // 建议使用 const
			'handle-callback-err': 2, // 处理回调错误 要有容错处理
			'semi-style': ['error', 'last'], // 语句结尾分号
			semi: ['error', 'always'], // 语句结尾分号
			'jsx-quotes': ['error', 'prefer-single'],
		},
	},
];
